// pages/goods_detail/index.js
//收藏逻辑
/**
 * 1. 获取收藏的数据 onShow生命周期中获取
 * 2. 判断当前商品是不是已经被收藏了
 * 3. 如果被收藏了 --> 改变图标样式
 *      如果没有 --->  ....该咋咋滴
 * 
 * 4.用户点击收藏按钮
 *    1 判断 该商品是否被收藏
 *    2 如果被收藏  删除缓存
 *    3 如果没有被收藏  添加缓存
 */
Page({

  /**
   * 页面的初始数据
   */
  data: {
    goodsData: {},

    //是否被收藏
    isCollect: false
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) { //goods_id=47868  {goods_id:47868}
    console.log("商品详情-->", options);
    const { goods_id } = options; //{goods_id:47868}
    this.getGoodsDetail(goods_id);
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {//A->b->c
    //全局函数  获取包含当前页面的所有页面调用栈(示例:A页面->B页面->c页面,最终,获取到的是[A,B,C])
    console.log(getCurrentPages())
    //获取所有页面调用栈 是一个数组 [vt,vt,vt]
    let pages = getCurrentPages();
    //通过页面调用栈函数获取当前页的vt
    let currentPage = pages[pages.length - 1];
    //通过当前页面的对象vt获取当页面上的页面参数 options
    let op = currentPage.options;
    console.log("opaction===>onShow", op)
  },

  //定义一个全局商品详情数据
  goodsInfo: {},
  //获取当前商品的商品详情
  getGoodsDetail: async function (goods_id) {
    const { data } = await wx.goodsApi.getGoodsDetail({ goods_id });
    this.goodsInfo = data.message;
    console.log(data);
    // let goodsData = {
    //   pics: data.message.pics,
    //   goods_price: data.message.goods_price,
    //   goods_name: data.message.goods_name,
    //   goods_introduce: data.message.goods_introduce
    // }
    //解构赋值
    let { pics, goods_price, goods_name, goods_introduce } = data.message;
    this.setData({
      goodsData: {
        pics, goods_price, goods_name, goods_introduce
      }
    });
    //收藏按钮初始化
    let collect = wx.getStorageSync('collect') || [];
    let index = collect.findIndex(item => item.goods_id === this.goodsInfo.goods_id);
    console.log(index,"-------------------------")
    if (index !== -1) {
      //改变样式
      this.setData({
        isCollect: true 
      })
    }
  },

  //轮播图点击事件
  handlePrevewImage(e) {
    //获取所有轮播图数据的图片url地址
    let urls = this.data.goodsData.pics.map(item => item.pics_mid);
    //通过点击事件传递当前轮播图片的url地址
    let { url } = e.currentTarget.dataset;
    //展示大图预览功能
    wx.previewImage({
      urls,//所有图片列表
      current: url //当前要展示的图片   默认值: urls 的第一张
    })
  },

  //添加收藏
  handleCollect(e) {
    /**
     *  * 4.用户点击收藏按钮
 *    1 判断 该商品是否被收藏
 *    2 如果被收藏  删除缓存
 *    3 如果没有被收藏  添加缓存
     */
    let isCollect = false;
    let collect = wx.getStorageSync('collect') || [];
    let index = collect.findIndex(item => item.goods_id === this.goodsInfo.goods_id);
    if (index !== -1) {//已经被收藏了
      //改变样式
      isCollect = false;
      //删除缓存
      collect.splice(index, 1);
      wx.showToast({
        title: '移除收藏',
      })
    } else {//还没有被收藏
      //改变页面按钮样式
      isCollect = true;
      //添加商品信息到收藏数组
      collect.push(this.goodsInfo);
      wx.showToast({//提示用户
        title: '添加收藏成功',
      })
    };
    //设置收藏按钮效果
    this.setData({
      isCollect
    });
    wx.setStorageSync('collect', collect)
  },

  //加入购物车功能
  handleCartAdd() {
    //点击了加入购物车按钮
    /**
     * 1 获取购物车数据 微信缓存 //存数据 ===>  [] {}
     * 2 判断? 购物车数据中是否有 当前商品
     * 3 如果有  让购物车中当前数据的数量++  (num++)
     * 4 如果没有  在购物车数据中 增加当前的数据 并且把num数量置1
     *   优化  当用户操作之后 弹出提示
     * 5 将更新后的数据写入缓存
     */

    //  let cart = wx.getStorage('key'); //异步
    let cart = wx.getStorageSync('cart') || []; //同步
    console.log("购物车数据", cart)

    //判断购物车中是否拥有当前商品信息
    //通过id获取商品是否存在购物车中,如果存在 index的值为数组下标,如果不存在 则为 -1
    let index = cart.findIndex(item => item.goods_id === this.goodsInfo.goods_id)
    if (index === -1) {
      //如果购物车中没有当前数据  将当前的商品信息加入到购物车
      this.goodsInfo.num = 1;
      this.goodsInfo.checked = true;
      cart.push(this.goodsInfo);
    } else {//如果购物车中存在当前商品
      cart[index].num++;
    }
    wx.setStorageSync('cart', cart);
    //弹出提示框
    wx.showToast({
      title: '加入购物车成功',
      icon: 'success',
      //为了防止用户疯狂点击按钮
      mask: true
    })
  }
})